package com.sgj.common.utils;

import java.util.function.Predicate;

/**
 * @Author: Guoji Shen
 * @Date: 2022/1/24 14:43
 */
public class BooleanUtil extends cn.hutool.core.util.BooleanUtil {

    /**
     * 自定义条件
     * @param value
     * @param predicate
     * @return
     */
    public static boolean judgeConditionByFunction(Integer value, Predicate<Integer> predicate) {
        return predicate.test(value);
    }

    /**
     * 条件都符合，true
     * @param stringOne
     * @param predicateOne
     * @param predicateTwo
     * @return
     */
    public static boolean testAndMethod(String stringOne, Predicate<String> predicateOne, Predicate<String> predicateTwo) {
        // 一定要条件都符合
        return predicateOne.and(predicateTwo).test(stringOne);
    }

    /**
     * 单个条件符合，true
     * @param stringOne
     * @param predicateOne
     * @param predicateTwo
     * @return
     */
    public static boolean testOrMethod(String stringOne, Predicate<String> predicateOne, Predicate<String> predicateTwo) {
        return predicateOne.or(predicateTwo).test(stringOne);
    }

    /**
     * 条件符合，false
     * @param stringValue
     * @param predicate
     * @return
     */
    public static boolean testNageteMethod(String stringValue, Predicate<String> predicate) {
        return predicate.negate().test(stringValue);
    }

    /**
     * 先判断对象是否为NULL—> 这个由Objects里面的isNull进行判断,如果，不为Null的话,那么接下来用java.lang.object里面的equals()方法进行比较
     * @param strValue
     * @param strValue2
     * @return
     */
    public static boolean testMethodIsEquals(String strValue, String strValue2) {
        return Predicate.isEqual(strValue).test(strValue2);
    }
}